package com.lzq;


import com.lzq.generator.CacGenerator;
import com.lzq.generator.CacGeneratorConfig;
import org.springframework.beans.factory.annotation.Value;
import org.springframework.util.StringUtils;


/**
 * <p>
 * 自动生成 DAO 代码 <br/>
 * <p>
 * 生成：entity， mapper , xml 代码 <br/>
 * <p>
 * entity , mapper 位置在：src/main/java + basePacakge + moduleName <br/>
 * <p>
 * xml 位置在 resources/mapper + doduleName <br/>
 * </p>
 */
public class Generator {

    /**
     * 生成代码的文件夹名称
     */
    public static final String CREATE_CODE_PROJECT_NAME = "demo-frame-dao";
    /**
     * 生成代码的基础包名
     */
    public static final String BasePackagePath = "cn.com.sand.scspcommon.common.mapper";
    /**
     * 子包名  下面包括 entity和mapper
     */
    public static final String CHILDER_PACKAGE_PATH = "module";


    private static String USERNAME = "scspv4";
    private static String PASSWORD = "scspv4";
    private static String DBURL = "172.28.250.142:3306/scspv4db_dev";
    private static final String AUTHOR_NAME = "刘赵强";

    public static void main(String[] args) {
        String[] tables = {"scsp_fud_trans_fund_jnl"};
        generatorCode(tables);
    }

    public static void generatorCode(String[] tables) {
        CacGeneratorConfig config = new CacGeneratorConfig();

        // datasource 配置
        config.setDataSourceDriverName("com.mysql.jdbc.Driver");
        config.setDataSourceUrl("jdbc:mysql://" + DBURL + "?useUnicode=true&characterEncoding=utf8&zeroDateTimeBehavior=convertToNull");
        config.setDataSourceUsername(USERNAME);
        config.setDataSourcePassword(PASSWORD);

        // 由于在 idea ide 中，工作目录 ${user.dir} 指向 demo-frame,
        // 加入一级目录 demo-frame-dao，让生成的代码在 项目 demo-frame-dao 下
        config.setMavenModuleName(CREATE_CODE_PROJECT_NAME);
        // 生成代码的基础包路径配置
        config.setBasePackage(BasePackagePath);
        // 生成代码的模块名称，代码将在基础包路径 + 模块的全路径下生成
        config.setModuleName(CHILDER_PACKAGE_PATH);
        // 指定需要生成的表，允许正则表达式，默认为全部表
        if (StringUtils.isEmpty(tables) || tables.length == 0) {
            config.setTables(new String[]{".*"});
        } else {
            config.setTables(tables);
        }
        // 是否覆盖已有的文件，默认为 false
        config.setFileOverride(true);
        // 工程目录路径
        String projectPath = System.getProperty("user.dir");
        if(com.baomidou.mybatisplus.core.toolkit.StringUtils.isNotEmpty(config.getMavenModuleName())) {
            projectPath = projectPath + "/" + config.getMavenModuleName() + "/";
        }
        config.setAuthorName(AUTHOR_NAME);
        config.setOutputDir(projectPath);
        // 根据配置创建代码
        CacGenerator.generate(config);
    }
}
